package p6.code;

import java.util.HashSet;
import java.util.Set;

/**
 * 这个例子展示了线程封闭，
 * 我们知道HashSet并不是线程安全的类，但是我们可以
 * 新建一个PersonSet类组合HashSet,并封装它的相关方法也能实现线程安全的访问HashSet
 */
public class PersonSet {

    private final Set<Person> mySet = new HashSet<Person>();

    /**
     * 整理封装HashSet.add方法，使用synchronized进行安全封装
     * @param p
     */
    public synchronized void addPerson(Person p){
        mySet.add(p);
    }

    public synchronized boolean containsPerson(Person p){
        return mySet.contains(p);
    }

}
